﻿/*
简单的事情 
Time Limit:1000MS  Memory Limit:32768K


Description:
数学天才fans曾经说过一句话：组合数的计算是一件非常简单的事情。组合数的计算真的是一件非常简单的事情吗？请你自己去尝试一下吧！ 

Input:
输入中的一些整数对n，m（m≤n≤20） 
Output:
输出其组合数。 
Sample Input:
5 2
18 13
Sample Output:
10
8568
*/
#include <stdio.h>
#define MAX_SIZE 128

unsigned long cnr(unsigned int n, unsigned int r)
{
	unsigned long c[MAX_SIZE];
	int i, j;

	if(r==0||r>=n)return 1UL;
	if(2*r>n)r=n-r;

	for (i=0; i<=r; ++i)
		c[i]=1UL;
	for (i=1; i<=(n-r); ++i)
		for (j=1; j<=r; ++j)
			c[j]+=c[j-1];

	return c[r];
}

int main(int argc, char* argv[])
{
	unsigned int n, r;

	while (EOF!=scanf("%u%u", &n, &r))
		printf("%u\n", cnr(n, r));
	return 0;
}